import request from '../../utils/request.js';

// pages/player/player.js
Page({

  // 实例化播放器对象
  player: null,

  /**
   * 页面的初始数据
   */
  data: {
    // 当前歌曲的id
    songId: 0,

    // 当前播放器的状态
    // 不要直接修改 isPlay 的状态，而是需要通过播放器的状态去控制 isPlay
    // js => 控制 => 播放器状态 => 控制 => isPlay
    isPlay: false,

    // 当前播放的歌曲详情
    song: null,

    // 待播放的歌曲url
    url: '',

    // 计算进度条的宽度，这个值直接使用计算得到的 百分比 数字就可以了
    width: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 进行播放器的初始化
    // 获取后台播放器实例对象
    this.player = wx.getBackgroundAudioManager();

    // 监听播放器的各种事件
    // 播放器开始播放音乐的时候触发
    this.player.onPlay(() => {
      this.setData({
        isPlay: true
      })
    });
    // 播放器暂停的时候
    this.player.onPause(() => {
      this.setData({
        isPlay: false
      })
    });
    // 播放器停止的时候
    this.player.onStop(() => {
      this.setData({
        isPlay: false
      })
    });
    // 播放器的播放进度
    this.player.onTimeUpdate(() => {
      this.setData({
        width: (this.player.currentTime / this.player.duration) * 100 + '%'
      });
    });

    // 进入页面的时候，获取歌曲详情，url并执行播放
    this.getSongDetailAndUrlAndPlay(options.id);

    // 监听 recommend 页面传入的 下一首歌曲的id
    getApp().myEvent.on('nextId', (nextId) => {
      this.getSongDetailAndUrlAndPlay(nextId);
    });
    getApp().myEvent.on('topid', (topid) => {
      this.getSongDetailAndUrlAndPlay(topid);
    });

  },

  // 根据传入的歌曲 id 获取歌曲详情和歌曲的 url，并播放
  async getSongDetailAndUrlAndPlay(songId) {
    const detailRs = await request('/song/detail', {ids: songId});
    const urlRs = await request('/song/url', {id: songId});

    // 更新数据
    this.setData({
      song: detailRs.songs[0],
      url: urlRs.data[0].url,
      songId
    });

    // 设置播放器的 src 和 title，播放器就可以播放指定的音乐了
    this.player.src = this.data.url;
    this.player.title = this.data.song;
  },

  // 播放与暂停按钮
  handleMusicPlay() {
    // 不要去修改 isPlay，而是需要调用 播放器 的 play() 和 pause() 控制播放器，播放器控制 isPlay
    // 但是需要根据 isPlay 去判断播放器是需要播放还是需要暂停
    if (this.data.isPlay) {
      // 正在播放，则调用暂停
      this.player.pause();
    } else {
      // 已经暂停，则需要开始播放
      this.player.play();
    }
  },

  // 点击播放上一首和下一首
  handleSwitch(event) {
    
    // 以事件的方式通知 recommend 页面查找下一首歌曲的 id，并再次以事件方式 通知 给当前页面
console.log(event);
 if(event.currentTarget.id=='next'){
  getApp().myEvent.emit('next',this.data.songId);
 }else if(event.currentTarget.id=='prev'){
  // 在全局里面自定义一个函数
  getApp().myEvent.emit('ontop',this.data.songId);
 }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },


  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})